Шаг 3. Разрешаем конфликт при затягивании изменений

Настал основной этап. Сначала нам нужно затянуть изменения с удалённого репозитория в локальный с помощью команды git pull.

Введена команда git pull
Введена команда git pull

Разберём последние три сообщения, потому что они наиболее важные. Сначала Git попытался сделать автоматическое слияние в index.html. Затем он обнаружил, что произошёл конфликт при слиянии двух разных версий. Последним сообщением он выдал, что автоматическое слияние невозможно, нужно разрешить конфликт вручную, а затем сделать коммит.

Перейдём в index.html. Мы видим, что в нём появилось много непонятных строчек, но на самом деле всё просто.

Файл index.html с двумя разными строчками текста
Файл index.html с двумя разными строчками текста

Первая часть начинается на <<<<<<< и заканчивается =======. Между ними находятся те изменения, которые были сделаны локально, то есть не в удалённом репозитории. Также есть надпись HEAD — это относительный указатель. В нашем случае он указывает на указатель ветки main, а он в свою очередь указывает на сделанный нами последний коммит. В этом коммите содержится изменение — добавление текста «Перейти на главную страницу».

Изменения, которые находятся между ======= и >>>>>>>, считаются приходящими, так как строчка с текстом «Перейти на страницу „О курсе“» была добавлена в удалённом репозитории. Ещё у нас есть непонятные символы, которые указаны после >>>>>>>. Это хэш того самого коммита, который пришёл к нам в локальный репозиторий с удалённого.

Нам нужно удалить всё лишнее и оставить только «Перейти на страницу „О курсе“».

Осталась только одна строчка после решения конфликта
Осталась только одна строчка после решения конфликта

Далее нам нужно закоммитить изменение. Сначала пропишем команду git add -A, а затем git commit -m "fix: conflict resolved when pulling changes".

Введена команда git commit -m
Введена команда git commit -m

Коммит успешно создан, конфликт тоже разрешён. Нам осталось только отправить изменения в удалённый репозиторий с помощью команды git push.

Введена команда git push
Введена команда git push

Перейдём в удалённый репозиторий и убедимся, что изменения отправлены.

Красная стрелка указывает на коммит об успешном разрешении конфликта
Красная стрелка указывает на коммит об успешном разрешении конфликта

Когда вы делали коммит, могли заметить, что ветка main получила другое название — main|MERGING. Данная ветка создаётся всегда, когда происходит конфликт, и удаляется автоматически после решения конфликта. Также из интересных особенностей: во время конфликта файл помечается синим цветом, а рядом с именем файла устанавливается восклицательный знак.